package com.vpen.blog.producer;

import com.vpen.blog.config.RabbitMQConfig;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import java.util.Map;

/**
 * -@Version 1.0
 * -@Author:Vpen
 * -@Date:2021/7/11 17:08
 * -@Content:
 */
@Component
public class DelayMessageProducer {
    @Autowired
    @Qualifier("rabbitTemplate")
    private RabbitTemplate rabbitTemplate;


    public void send(String msg,Integer time){
        // 生产者发送消息到指定路由
        rabbitTemplate.convertAndSend(
                RabbitMQConfig.Delay_Exchange_Name,
                RabbitMQConfig.Delay_Queue_Routing_key,
                msg,
                // 发送消息的前置操作，函数式接口
                message -> {
                    // 消息设置时间
                    message.getMessageProperties().setDelay(time*1000);
                    return message;
                });
    }

    /**
     * 作者:Vpen
     * 描述:发送文章，等待消费
     * */
    public void send(Map<String,Object> article, Integer time){
        // 生产者发送消息到指定路由
        rabbitTemplate.convertAndSend(
                RabbitMQConfig.Delay_Exchange_Name,
                RabbitMQConfig.Delay_Queue_Routing_key,
                article,
                // 发送消息的前置操作，函数式接口
                message -> {
                    // 消息设置时间
                    message.getMessageProperties().setDelay(time*1000);
                    return message;
                });
    }
}
